home *** CD-ROM | disk | FTP | other *** search
- #include <stdlib.h>
- #include <stdio.h>
- #include <ctype.h>
- #include <time.h>
- #include <dos.h>
- #include <string.h>
- #include "SysInclude.h"
- #include <rtgmaster/rtgmaster.h>
- #include <rtgmaster/rtgsublibs.h>
- #include <clib/rtgmaster_protos.h>
- #include <pragmas/rtgmaster_pragmas.h>
- #include <rtgmaster/rtgc2p.h>
- #include "rtggadgets.h"
- #include <libraries/asl.h>
- #include <proto/console.h>
- #include <proto/utility.h>
-
-
- #define SMRTITLE ("Simplest ScreenMode Requester")
-
- struct RtgScreen *RtgScreen;
- struct ScreenReq *sr;
- struct RTGMasterBase *RTGMasterBase;
-
- struct Library *IntuitionBase;
- struct Library *GfxBase;
- struct Library *AslBase;
- UBYTE *sadr;
- framemode=2;
-
- #include "random.h"
- #include "boolean.h"
- #include "fixed.h"
- #include "world.h"
-
- long clip_mask_x = map_size_x - 1;
- long clip_mask_y = map_size_y - 1;
-
- long scale_height = 128;
-
- long world_size_x = map_size_x * scale_area;
- long world_size_y = map_size_y * scale_area;
-
- long max_alt = 255;
- long min_alt = 0;
- #define view_size 80
- long view_start = view_size / 2;
-
- long win_cen_x=160;
- long win_cen_y=100;
-
- long black =0;
- long cursor_color=255;
-
- typedef struct{
- int x;
- int y;
- int z;
-
- angle_t angle;
- fixed sine;
- fixed cosine;
- }viewer_t;
-
- static viewer_t viewer;
-
- typedef struct{
- int x1; /* Left */
- int y1; /* Top */
- int x2; /* Right */
- int y2; /* Bottom */
- int win_cen_x,win_cen_y;
- int dither_mode;
- } win_t;
-
- static win_t win=
- {
- 0, 0, 319, 199,0,0,5
- };
-
-
- typedef struct{
- int y;
- unsigned char color;
- } col_t ;
-
- static col_t col [ 321 ];
- static col_t old_col [ 321 ];
- typedef struct{
- unsigned long r,g,b;
- }color_t;
- color_t colors[256];
- ULONG cmap[800];
- int Planar=FALSE;
- ULONG c2psignal;
-
- extern int __asm mul_and_div(register __d0 int a,register __d1 int b,register __d2 int c);
-
- extern int __asm dot_product(register __d0 int u1,register __d1 int v1, register __d2 int u2, register __d3 int v2);
-
- extern void __asm rotate(register __a0 void *x,register __a1 void *y,register __d0 int sine,register __d1 int cosine);
-
- extern void __asm copy(register __a0 void *src,register __a1 void *dest,register __d0 ULONG method);
-
- static unsigned char tmp_scr[200][320];
-
- void ToScreen(struct RtgScreen *RtgScreen)
- {
-
- /*if(Planar==TRUE){
- CallRtgC2P(RtgScreen,sadr,tmp_scr,c2psignal,0,0,320,200,c2p_1x1);
- Wait(1<<c2psignal);
- }else CopyRtgPixelArray(RtgScreen,sadr,tmp_scr,win.x1,0,win.x2-win.x1+1,200,0,0);
- */
- copy(tmp_scr,sadr,0);
- }
-
- void view_overhead_map (struct RtgScreen *RtgScreen)
- {
- int start_x = (int) (viewer.x / scale_area) - win_cen_x;
- int start_y = (int) (viewer.y / scale_area) - win_cen_y;
-
- int x,y,map_y,map_x;
-
- start_x &= clip_mask_x;
- start_y &= clip_mask_y;
-
- map_x = start_x;
- for(y=0;y<200;++y){
- map_y=(start_y+y)&clip_mask_y;
- for(x=0;x<win.x2-win.x1; ++ x ){
- map_x=(start_x+x+win.x1)&clip_mask_x;
- tmp_scr[y][x]=(UBYTE)color_map[map_x][map_y];
- }
- }
-
- ToScreen(RtgScreen);
- {
- int x1 = dot_product ( viewer.sine, viewer.cosine, 20, 0 ) + 160;
- int y1 = dot_product ( -viewer.cosine, viewer.sine, 20, 0 ) + 100;
- int x2 = dot_product ( viewer.sine, viewer.cosine, 30, 0 ) + 160;
- int y2 = dot_product ( -viewer.cosine, viewer.sine, 30, 0 ) + 100;
- DrawRtgLine(RtgScreen, sadr,255,x1,y1,x2,y2);
- DrawRtgLine(RtgScreen, sadr,255,159, 99,162, 99);
- DrawRtgLine(RtgScreen, sadr,255,162, 99,162,102);
- DrawRtgLine(RtgScreen, sadr,255,162,102,159,102);
- DrawRtgLine(RtgScreen, sadr,255,159,102,159, 99);
- }
- }
-
- unsigned char calc_color(int map_x, int map_y)
- {
- return(color_map[map_x][map_y]);
- }
-
- static void draw_row(struct RtgScreen *RtgScreen)
- {
-
- int x,y;
-
- for(x=win.x1;x<win.x2;++x){
- if(col[x].y<0 )col[x].y=0; else if(col[x].y>199)col[x].y=199;
- }
- if(win.dither_mode==0){
- for(x=win.x1;x<win.x2;++x){
- tmp_scr[col[x].y][x-win.x1]=(unsigned char)col[x].color;
- old_col[x].y =col[x].y;
- old_col[x].color=col[x].color;
- }
- }else if(win.dither_mode==1){
- for(x=win.x1;x<win.x2;++x){
- if(old_col[x].y<=col[x].y){
- for(y=old_col[x].y;y<col[x].y;y++){
- tmp_scr[y][x-win.x1]=(unsigned char)old_col[x].color;
- }
- }
- old_col[x].y =col[x].y;
- old_col[x].color=col[x].color;
- }
- }else if(win.dither_mode==2){
- for(x=win.x1;x<win.x2;++x){
- int color=old_col[x].color;
- int dcol=col[x].color-old_col[x].color;
- int dy=col[x].y-old_col[x].y;
- int scr_x=x-win.x1;
- for(y=old_col[x].y;y<col[x].y;y++){
- tmp_scr[y][scr_x]=(unsigned char)color;
- color=old_col[x].color+(dcol)*((y-old_col[x].y+1)/dy);
- }
- old_col[x].y =col[x].y;
- old_col[x].color=col[x].color;
- }
- }else{
- for(x=win.x1;x<win.x2;++x){
- int dif=col[x].y-old_col[x].y;
- if(dif>0){
- int color=old_col[x].color;
- int den=col[x].y-old_col[x].y;
- int num=col[x].color-color;
- int color_inc;
- int i=0,err=0;
- int scr_x=x-win.x1;
- if(num<0){color_inc=-1;num=-num;}
- else color_inc=1;
- while(i<dif){
- tmp_scr[old_col[x].y+i][scr_x]=(unsigned char)color;
- i++;
- err+=num;
- while(err>=den){
- err -=den;
- color+=color_inc;
- }
- }
- }
- old_col[x].y =col[x].y;
- old_col[x].color=col[x].color;
- }
- }
-
-
- }
-
- static void view_3d(struct RtgScreen *RtgScreen)
- {
- const sz = 240;
- int x;
-
-
- int viewer_map_x=viewer.x/scale_area;
- int viewer_map_y=viewer.y/scale_area;
-
- int map_start_x, map_start_y;
- int map_start_x_inc,map_start_y_inc;
- int map_x_inc, map_y_inc;
-
- int start_x, start_y;
- #ifdef ALT19_03_96
- if(viewer.angle < 450 || viewer.angle >= 3150 ){
- map_start_x = (viewer_map_x-view_start) & clip_mask_x;
- map_start_y = (viewer_map_y-view_start) & clip_mask_y;
- map_start_x_inc = 0;
- map_start_y_inc = 1;
- map_x_inc = 1;
- map_y_inc = 0;
-
- start_x = -view_start * scale_area;
- start_y = view_start * scale_area;
- }else if( viewer.angle<1350 ){
- map_start_x = (viewer_map_x+view_start) & clip_mask_x;
- map_start_y = (viewer_map_y-view_start) & clip_mask_y;
- map_start_x_inc = -1;
- map_start_y_inc = 0;
- map_x_inc = 0;
- map_y_inc = 1;
-
- start_x = view_start * scale_area;
- start_y = view_start * scale_area;
- }else if( viewer.angle<2250 ){
- map_start_x = (viewer_map_x+view_start) & clip_mask_x;
- map_start_y = (viewer_map_y+view_start) & clip_mask_y;
- map_start_x_inc = 0;
- map_start_y_inc = -1;
- map_x_inc = -1;
- map_y_inc = 0;
-
- start_x = view_start * scale_area;
- start_y = -view_start * scale_area;
- }else{
- map_start_x = (viewer_map_x-view_start) & clip_mask_x;
- map_start_y = (viewer_map_y+view_start) & clip_mask_y;
- map_start_x_inc = 1;
- map_start_y_inc = 0;
- map_x_inc = 0;
- map_y_inc = -1;
-
- start_x = -view_start * scale_area;
- start_y = -view_start * scale_area;
- }
- #endif
- if(viewer.angle < 450 || viewer.angle >= 3150 ){
- map_start_x = (viewer_map_x-view_start) & clip_mask_x;
- map_start_y = (viewer_map_y-view_start) & clip_mask_y;
- map_start_x_inc = 0;
- map_start_y_inc = 1;
- map_x_inc = 1;
- map_y_inc = 0;
-
- start_x = -view_start * scale_area;
- start_y = view_start * scale_area;
- }else if( viewer.angle<1350 ){
- map_start_x = (viewer_map_x+view_start) & clip_mask_x;
- map_start_y = (viewer_map_y-view_start) & clip_mask_y;
- map_start_x_inc = -1;
- map_start_y_inc = 0;
- map_x_inc = 0;
- map_y_inc = 1;
-
- start_x = view_start * scale_area;
- start_y = view_start * scale_area;
- }else if( viewer.angle<2250 ){
- map_start_x = (viewer_map_x+view_start) & clip_mask_x;
- map_start_y = (viewer_map_y+view_start) & clip_mask_y;
- map_start_x_inc = 0;
- map_start_y_inc = -1;
- map_x_inc = -1;
- map_y_inc = 0;
-
- start_x = view_start * scale_area;
- start_y = -view_start * scale_area;
- }else{
- map_start_x = (viewer_map_x-view_start) & clip_mask_x;
- map_start_y = (viewer_map_y+view_start) & clip_mask_y;
- map_start_x_inc = 1;
- map_start_y_inc = 0;
- map_x_inc = 0;
- map_y_inc = -1;
-
- start_x = -view_start * scale_area;
- start_y = -view_start * scale_area;
- }
-
-
- start_x -= (viewer.x % scale_area);
- start_y += (viewer.y % scale_area);
-
- {
- int world_x_inc = map_x_inc * scale_area;
- int world_y_inc = -map_y_inc * scale_area;
- int start_x_inc,start_y_inc;
- int nr_rows;
-
- rotate(&start_x, &start_y, viewer.sine,viewer.cosine);
- rotate(&world_x_inc,&world_y_inc,viewer.sine,viewer.cosine);
-
- start_x_inc= world_y_inc;
- start_y_inc=-world_x_inc;
-
-
- memset(tmp_scr,0,sizeof(tmp_scr));
-
-
- for ( x = 0; x <win.x2-win.x1; ++ x ){
- col[x].y=old_col[x].y = win.y2;
- col[x].color=old_col[x].color = 0;
- }
-
- for(nr_rows=view_size/2;nr_rows>0;--nr_rows ){
- int map_x=map_start_x;
- int map_y=map_start_y;
-
- int world_x=start_x;
- int world_y=start_y;
- int world_z=viewer.z-alt_map[map_x][map_y]*scale_height;
-
- int last_sx=win.x2;
- int last_sy=win.y1;
- int last_color=0;
-
- int nr_cols=view_size;
-
- while(nr_cols>0){
-
- if(world_y>0){
- int sx=mul_and_div(world_x,sz,world_y)+win_cen_x;
- int sy=mul_and_div(world_z,sz,world_y)+win_cen_y;
- int color=calc_color(map_x,map_y);
-
- if(sx>win.x1){
- int den=sx-last_sx;
-
- int num=color-last_color;
- int color_inc;
- int err,num2,last_sy_inc,err2;
-
- if(num<0){color_inc=-1;num=-num;}else color_inc=1;
-
- err=0;
- num2=sy-last_sy;
- if(num2<0){last_sy_inc=-1;num2=-num2;}else last_sy_inc=1;
-
- err2=0;
-
- if(last_sx<win.x1 ){
- int delta=win.x1-last_sx;
-
- err=num*delta%den;
- last_color+=color_inc*num*delta/den;
-
- err2=num2*delta%den;
- last_sy+=last_sy_inc*num2*delta/den;
-
- last_sx=win.x1;
- }
-
- if(sx>win.x2)sx=win.x2;
-
- for(x=last_sx;x<sx;++x){
-
- col[x].y =last_sy;
- col[x].color=(unsigned char) last_color;
-
- err+=num;
- while(err >=den){
- err-=den;
- last_color+=color_inc;
- }
-
- err2+=num2;
- while(err2>=den){
- err2-=den;
- last_sy+=last_sy_inc;
- }
- }
-
- if(sx==win.x2)break;
- }
-
- last_sx=sx;
- last_sy=sy;
- last_color=color;
- }
-
-
-
- map_x=(map_x+map_x_inc)&clip_mask_x;
- map_y=(map_y+map_y_inc)&clip_mask_y;
-
- world_x+=world_x_inc;
- world_y+=world_y_inc;
- world_z =viewer.z - alt_map [map_x][map_y] * scale_height;
-
- --nr_cols;
- }
-
-
-
- draw_row(RtgScreen);
-
-
-
- start_x+=start_x_inc;
- start_y+=start_y_inc;
-
- map_start_x=(map_start_x+map_start_x_inc)&clip_mask_x;
- map_start_y=(map_start_y+map_start_y_inc)&clip_mask_y;
- }
- }
-
-
-
- for ( x = win.x1; x < win.x2; ++ x ){
- col [x].y = win.y2;
- col [x].color = calc_color (viewer_map_x, viewer_map_y);
- }
-
- draw_row(RtgScreen);
- ToScreen(RtgScreen);
-
- }
-
-
-
-
- void set_palette(struct RtgScreen *RtgScreen)
- {
-
- int i;
-
- memset(colors,0,sizeof(colors));
-
- for(i=0;i<64;++i){
- colors[i+1].r=(unsigned char)i;
- colors[i+1].g=(unsigned char)(i*i/63);
- colors[i+1].b=(unsigned char)(i*i/63);
- }
-
- colors[255].r =16;
- colors[255].g =63;
- colors[255].b =0;
- {
- UBYTE rr, rg, rb;
-
- int x,i;
- cmap[0] = 256 * 65536;
- rr = 0;
- rg = 0;
- rb = 0;
- x = 1;
- for (i = 0; i < 64; i++) {
- cmap[x++] = rr * 0x1111111;
- cmap[x++] = rg * 0x1111111;
- cmap[x++] = rb * 0x1111111;
- rr += 3;
- }
- for (i = 0; i < 127; i++) {
- cmap[x++] = rr * 0x1111111;
- cmap[x++] = rg * 0x1111111;
- cmap[x++] = rb * 0x1111111;
- rg += 3;
- }
- for (i = 0; i < 60; i++) {
- cmap[x++] = rr * 0x1111111;
- cmap[x++] = rg * 0x1111111;
- cmap[x++] = rb * 0x1111111;
- rb += 3;
- }
- for (i = 0; i < 4; i++) {
- cmap[x++]=0xFFFFFFFF;
- cmap[x++]=0xFFFFFFFF;
- cmap[x++]=0xFFFFFFFF;
- }
- cmap[x++]=0;
-
- LockRtgScreen(RtgScreen);
- LoadRGBRtg(RtgScreen, (APTR)cmap);
- UnlockRtgScreen(RtgScreen);
- }
- }
-
- int Clear_Screen(struct RtgScreen *RtgScreen)
- {
- memset(tmp_scr,0,sizeof(tmp_scr));
- ToScreen(RtgScreen);
- return(0);
- }
-
- typedef enum{cockpit_view,map_view}view_t;
-
- void interact(struct RtgScreen *RtgScreen)
- {
- BYTE buffer[10];
- float frames=0;
- const clearance = 8 * scale_height;
- const max_altitude = (max_alt+4) * scale_height;
- int vel = 0;
- int vz = 0;
- int va = 0;
- boolean done =FALSE;
- view_t view =cockpit_view;
- long t1,t2,anz_frames=0;
- time(&t1);
-
-
- viewer.x = 4 * scale_area;
- viewer.y = 4 * scale_area;
- viewer.z = color_map [4][4] * scale_height + clearance;
- viewer.angle = 1800;
-
-
- while ( ! done ){
-
- int vx,vy,map_x,map_y;
-
-
- viewer.angle += va;
-
- while ( viewer.angle < 0 ) viewer.angle += 3600;
- while ( viewer.angle >= 3600 ) viewer.angle -= 3600;
-
- FIX_cos_sin ( viewer.angle, & viewer.cosine, & viewer.sine );
-
-
- vx = mul_and_div ( vel, -viewer.sine, 65536 );
- vy = mul_and_div ( vel, viewer.cosine, 65536 );
-
- map_x = (int) (viewer.x / scale_area);
- map_y = (int) (viewer.y / scale_area);
-
- viewer.x += vx;
- viewer.y += vy;
-
- while(viewer.x< 0 ) viewer.x+=world_size_x;
- while(viewer.x>=world_size_x) viewer.x-=world_size_x;
-
- while(viewer.y< 0 ) viewer.y+=world_size_y;
- while(viewer.y>=world_size_y) viewer.y-=world_size_y;
-
-
- viewer.z += vz;
-
- if(viewer.z<alt_map [map_x][map_y] * scale_height + clearance ){
- viewer.z=alt_map [map_x][map_y] * scale_height + clearance;
- vz =0;
- }else if(viewer.z > max_altitude ){
- viewer.z=max_altitude;
- vz =0;
- }
-
-
-
- if(view==cockpit_view)view_3d(RtgScreen);
- else view_overhead_map(RtgScreen);
- if (framemode)
- {
- ++anz_frames;
- if(anz_frames>=10){
- char gww[20];
- float diff;
- time(&t2);
- diff=(t2-t1);
- if(diff>0){
- float g=(anz_frames)/diff;
- diff=g;
- }
- sprintf(gww,"%5.1f",diff);
- frames=diff;
- if (framemode>1)
- RtgText(RtgScreen,sadr,gww,5,0,180);
-
- }
-
- }
-
- /* Key pollen */
- if(RTGInputRecord.LastKey!=0){
- RTGIe.ie_NextEvent = NULL;
- RTGIe.ie_Class = IECLASS_RAWKEY;
- RTGIe.ie_Code = RTGInputRecord.LastKey;
- RTGIe.ie_Qualifier = 0;
- RTGIe.ie_position.ie_addr = NULL;
- RawKeyConvert(&RTGIe, buffer, 10, NULL);
- RTGInputRecord.LastKey = 0;
- switch(buffer[0]){
- case -101:
- switch(buffer[1]){
- case 65 /*CURSORUP */: vz+=scale_height/2; break;
- case 66 /*CURSORDOWN */: vz-=scale_height/2; break;
- case 67 /*CURSORRIGHT*/: va += 5; break;
- case 68 /*CURSORLEFT */: va -= 5; break;
- case 48: /* F1 */
- win.x1=0;
- win.x2=319;
- t1=t2;
- anz_frames=0;
- Clear_Screen(RtgScreen);
- break;
- case 49: /* F2 */
- win.x1=20;
- win.x2=299;
- t1=t2;
- anz_frames=0;
- Clear_Screen(RtgScreen);
- break;
- case 50: /* F3 */
- win.x1=40;
- win.x2=279;
- t1=t2;
- anz_frames=0;
- Clear_Screen(RtgScreen);
- break;
- case 51: /* F4 */
- win.x1=60;
- win.x2=259;
- t1=t2;
- anz_frames=0;
- Clear_Screen(RtgScreen);
- break;
- case 52: /* F5 */
- win.x1=80;
- win.x2=239;
- t1=t2;
- anz_frames=0;
- Clear_Screen(RtgScreen);
- break;
- case 53: /* F6 */
- framemode=0;
- break;
- case 54: /* F7 */
- framemode=1;
- break;
- case 55: /* F8 */
- framemode=2;
- break;
- case 56: /* F9 */
- win.dither_mode=(win.dither_mode==5)?0:win.dither_mode+1;
- t1=t2;
- anz_frames=0;
- Clear_Screen(RtgScreen);
- break;
- case 57: /* F10 */
- win.dither_mode=(win.dither_mode==0)?5:win.dither_mode-1;
- t1=t2;
- anz_frames=0;
- Clear_Screen(RtgScreen);
- break;
- default:
- break;
- }
- break;
- case 27:
- case ' ': done=TRUE; break;
- case '5': vel = 0; va = 0; vz = 0; break;
- case 'm':
- view=(view==map_view)?cockpit_view:map_view;
- t1=t2;
- anz_frames=0;
- break;
- case 'n': viewer.angle = 0; break;
- case 'e': viewer.angle = 900; break;
- case 's': viewer.angle = 1800; break;
- case 'w': viewer.angle = 2700; break;
- case 'r': viewer.angle = (viewer.angle + 1800) % 3600; break;
- case '+':
- case '=': vel -= scale_area / 8; break;
- case '-': vel += scale_area / 8; break;
- default:
- break;
- }
- }
- }
- printf("Frames: %5.1f\n",frames);
- }
-
-
- const char * instructions =
-
- "\n\"Moonbase\" 3D Landscape Demo\n"
- "????????????????????????????\n\n"
- "Use the mouse or arrow keys to steer. Other keys are:\n\n"
- " + - Increase/Decrease forward velocity\n"
- " m Toggle satellite view\n"
- " Esc Quit\n"
- "\nPress Enter to begin.\n"
- "";
-
- const char * closing_msg =
-
- "Moonbase was written by James McNeill (mcneja@wwc.edu)\n"
- "using Watcom C++ and the PMODE/W DOS extender.\n";
-
-
- int CloseAll(int mode)
- {
- if(GfxBase!=NULL)CloseLibrary(GfxBase);
- if(IntuitionBase!=NULL)CloseLibrary(IntuitionBase);
- if(RTGMasterBase!=NULL)CloseLibrary((struct Library *)RTGMasterBase);
- if(AslBase!=NULL)CloseLibrary(AslBase);
- return(0);
- }
-
-
- struct TagItem rtag[] = {
- smr_ChunkySupport, (1<<9),
- smr_PlanarSupport, -1,
- smr_Buffers, 1,
- smr_TitleText, (ULONG)"MOON Landscape Demo",
- smr_MinWidth, 320,
- smr_MinHeight, 200,
- smr_MaxWidth, 320,
- smr_MaxHeight, 240,
- TAG_DONE, NULL
- };
-
- struct TagItem tacks[] = {
- TAG_DONE, 0
- };
-
- struct TagItem gtag[] = {
- grd_BytesPerRow, 0,
- grd_Width, 0,
- grd_Height, 0,
- grd_Depth, 0,
- grd_PixelLayout, 0,
- grd_ColorSpace, 0,
- grd_PlaneSize, 0,
- grd_BusSystem, 0,
- TAG_DONE, 0
- };
-
- int RTGScreen(void)
- {
- struct TagItem *tag;
- c2psignal=AllocSignal(-1);
- if(1){
- if(NULL!=(RtgScreen = OpenRtgScreen(sr, tacks))){
- if(NULL!=RTGGOpenInput()) {
- RtgSetTextMode(RtgScreen,0,255,JAM1);
- sadr=GetBufAdr(RtgScreen,0);
- GetRtgScreenData(RtgScreen, gtag);
- tag=FindTagItem(grd_PixelLayout, gtag);
- if (tag->ti_Data == grd_PLANAR) Planar = TRUE;
- else Planar = FALSE;
- printf("Screen is %ld x %ld x %ld\n", gtag[1].ti_Data, gtag[2].ti_Data, gtag[3].ti_Data);
- printf("Screenmode is %s\n",(Planar==TRUE)?"Planar":"Chunky");
- set_palette(RtgScreen);
- RTGGAddIPH();
- interact(RtgScreen);
- RTGGRemIPH();
- RTGGCloseInput();
- }
- CloseRtgScreen(RtgScreen);
- }else{
- PutStr("Konnte RTG-Screen 8 Bit nicht öffnen\n");
- }
- }
- FreeSignal(c2psignal);
- return(TRUE);
- }
-
-
- int main(void)
- {
- if(RTGMasterBase=(struct RTGMasterBase *)OpenLibrary((STRPTR)"rtgmaster.library", 0)){
- if (NULL!=(sr=RtgScreenModeReq(rtag)))
- {
- WORLD_generate ();
-
- printf ( instructions );
- if(IntuitionBase=OpenLibrary("intuition.library",0)){
- if(GfxBase = OpenLibrary("graphics.library",0)){
- if(AslBase=OpenLibrary("asl.library", 38L)){
- RTGScreen();
- }else PutStr("Konnte \"asl.library\" nicht öffnen\n");
- }else PutStr("Konnte \"graphics.library\" nicht öffnen\n");
- }else PutStr("Konnte \"intuition.library\" nicht öffnen\n");
-
- CloseAll(0);
-
-
- printf ( closing_msg );
- }
- else PutStr("Konnte keine Screenmodes finden\n");
- }else PutStr("Konnte \"rtgmaster.library\" nicht öffnen\n");
- return 0;
- }
-